/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.barbon.sudoku.model.entidade;

import java.io.Serializable;
import java.util.Objects;

/**
 *
 * @author Barbon
 */
public class Parametros  implements Serializable {
    private VelocidadeAutoResolucao velocidadeAutoResolucao;
    private boolean destacaCelulasParentas;
    private boolean mostrarCelulasConflitantes;
    private boolean permiteInserirCelulasConflitantes;

    public Parametros() {
        velocidadeAutoResolucao = VelocidadeAutoResolucao.DECIMO_DE_SEGUNDO;
        destacaCelulasParentas = true;
        mostrarCelulasConflitantes = true;
        permiteInserirCelulasConflitantes = false;
    }

    public Parametros(VelocidadeAutoResolucao velocidadeAutoResolucao, 
                      boolean destacaCelulasParentas, 
                      boolean mostrarCelulasConflitantes, 
                      boolean permiteInserirCelulasConflitantes) {
        this.velocidadeAutoResolucao = velocidadeAutoResolucao;
        this.destacaCelulasParentas = destacaCelulasParentas;
        this.mostrarCelulasConflitantes = mostrarCelulasConflitantes;
        this.permiteInserirCelulasConflitantes = permiteInserirCelulasConflitantes;
    }

    public VelocidadeAutoResolucao getVelocidadeAutoResolucao() {
        return velocidadeAutoResolucao;
    }

    public void setVelocidadeAutoResolucao(VelocidadeAutoResolucao velocidadeAutoResolucao) {
        this.velocidadeAutoResolucao = velocidadeAutoResolucao;
    }

    public boolean isDestacaCelulasParentas() {
        return destacaCelulasParentas;
    }

    public void setDestacaCelulasParentas(boolean destacaCelulasParentas) {
        this.destacaCelulasParentas = destacaCelulasParentas;
    }

    public boolean isMostrarCelulasConflitantes() {
        return mostrarCelulasConflitantes;
    }

    public void setMostrarCelulasConflitantes(boolean mostrarCelulasConflitantes) {
        this.mostrarCelulasConflitantes = mostrarCelulasConflitantes;
    }

    public boolean isPermiteInserirCelulasConflitantes() {
        return permiteInserirCelulasConflitantes;
    }

    public void setPermiteInserirCelulasConflitantes(boolean permiteInserirCelulasConflitantes) {
        this.permiteInserirCelulasConflitantes = permiteInserirCelulasConflitantes;
    }

    @Override
    public String toString() {
        return "Parametros{" + "velocidadeAutoResolucao=" + velocidadeAutoResolucao + ", destacaCelulasParentas=" + destacaCelulasParentas + ", mostrarCelulasConflitantes=" + mostrarCelulasConflitantes + ", permiteInserirCelulasConflitantes=" + permiteInserirCelulasConflitantes + '}';
    }
    
    @Override
    public int hashCode() {
        int hash = 3;
        hash = 67 * hash + Objects.hashCode(this.velocidadeAutoResolucao);
        hash = 67 * hash + (this.destacaCelulasParentas ? 1 : 0);
        hash = 67 * hash + (this.mostrarCelulasConflitantes ? 1 : 0);
        hash = 67 * hash + (this.permiteInserirCelulasConflitantes ? 1 : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Parametros other = (Parametros) obj;
        if (this.velocidadeAutoResolucao != other.velocidadeAutoResolucao) {
            return false;
        }
        if (this.destacaCelulasParentas != other.destacaCelulasParentas) {
            return false;
        }
        if (this.mostrarCelulasConflitantes != other.mostrarCelulasConflitantes) {
            return false;
        }
        if (this.permiteInserirCelulasConflitantes != other.permiteInserirCelulasConflitantes) {
            return false;
        }
        return true;
    }
    
}
